/************************************************************************

								Heroes IV
					  Copyright 2000, The 3DO Company

	------------------------------------------------------------------
  							 combat_spell_cell_target.h

	$Header: /heroes4/combat_spell_cell_target.h $

	$NoKeywords: $

 ************************************************************************/

#if !defined( COMBAT_SPELL_CELL_TARGET_H_INCLUDED )
#define COMBAT_SPELL_CELL_TARGET_H_INCLUDED

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

#include "combat_object_ptr.h"
#include "combat_spell.h"
#include "map_point.h"

// -------------------------------------------------------------------
// spell which targets a square rather than a creature
// -------------------------------------------------------------------
class t_combat_spell_cell_target : public t_combat_spell
{
public:
	t_combat_spell_cell_target( t_battlefield& battlefield, t_spell spell );
	virtual ~t_combat_spell_cell_target();

	virtual bool            begin_casting();
	virtual bool		    can_cast( t_screen_point const& point ) const;
	virtual t_mouse_window* mouse_move( t_screen_point const& point,
									    std::string& help_text );
	virtual bool            left_click( t_screen_point const& point );
protected:
	virtual bool can_cast_here( t_map_point_2d const& square, 
		                        std::string* help_text ) const = 0;
	virtual int  get_footprint_size() const = 0;

	t_map_point_2d		m_target_square;
	t_combat_object_ptr m_target_shadow;
};

#endif // COMBAT_SPELL_CELL_TARGET_H_INCLUDED